Transmission Control Protocol (TCP) provides reliable data transmission with an embedded congestion control algorithm that effectively removes congestion collapses in the Internet by adjusting the sending rate according to the available bandwidth of the network. Although TCP achieves remarkable success in maximizing the utilization of the link and fairly sharing bandwidth between competing flows, in today's Internet environment, it has been reported that TCP substantially underutilizes network bandwidth over high-speed and long distance networks. In the last decade, researchers have been actively seeking new approaches to improve TCP performance over fast and long-distance networks.
It would be desirable for any new high-speed congestion control protocol to satisfy the following three requirements for successful deployment into the Internet: 1) improve the throughput of the connection to efficiently use the high-speed network link; 2) have good intra-protocol fairness, especially when the competing flows have different round trip times (RTTs); and 3) not reduce the performance of other regular TCP flows competing on the same path.
The third requirement may be referred to herein as “TCP friendliness,” which means that any new protocol should only make better use of residual bandwidth, but not steal bandwidth from other TCP flows. In general, delay-based protocols estimate the packets backlogged in the bottleneck queue and compare it with a threshold y. If the backlog is larger than γ, the sending rate is reduced. Otherwise, the sending rate is increased (or remains the same). However, in order for delay-based protocols to be friendly to regular TCP, it requires correctly setting a threshold γ. If γ is set too large, the delay-based protocol may not timely detect the build-up of the queue.
Compound TCP (CTCP) has been previously proposed as a promising approach that satisfies all aforementioned requirements. CTCP is a synergy of both delay-based and loss-based congestion avoidance approaches, in which a scalable delay-based component is added to the standard TCP. This delay-based component can efficiently use the link capacity, and also can react early to congestion by sensing the changes in RTT. This way, CTCP achieves high link utilization, good RTT fairness and TCP friendliness.
To effectively detect early congestions, CTCP requires estimating the backlogged packets at a bottleneck queue and compares this estimate to a predefined threshold γ. However, setting this threshold is particularly difficult in CTCP (and in many other similar delay-based approaches), because it largely depends on the network configuration and the number of concurrent flows that compete for the same bottleneck link, which are, unfortunately, unknown to end-systems. As a consequence, the original proposed CTCP with a fixed γ may still demonstrate poor TCP-friendliness over under-buffered network links. In the worst case, TCP-unfairness of CTCP may even be comparable to that of HighSpeed TCP (HSTCP). One naïve solution to that problem is to configure γ to a very low value, but a very small γ may falsely detect congestion and adversely affect the throughput.